package question3;

import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JRootPane;
import javax.swing.JTextField;

import java.lang.Exception;



/**
 * Classe AppletteFahrenheit - decrivez la classe ici
 * 
 * @author:  (votre nom)
 * @version: (un numero de version ou une date)
 */
public class AppletteFahrenheit extends JApplet implements ActionListener{
	  /**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private static final Exception Exception = null;
	private JTextField entree = new JTextField( 6 );
    /** Le bouton de conversion. */
	  private JButton  boutonDeConversion = new JButton( "convertir" );
    /** La sortie en degre Celsius. */
    private JTextField sortie = new JTextField( 6 );
    
	 /**
	 * Appelee par le navigateur ou le visualiseur afin de signaler a l'Applet
	 * qu'il est maintenant pris en charge par le systeme.
	 * Il est garanti que ceci precedera le premier appel de la methode start.
	 */
	public void init(){
		// Il y a un conflit de securite avec les navigateurs courants (incluant
		// Netscape & Internet Explorer) qui interdisent l'acces e la queue 
		// d'evenements d'AWT --ce dont les JApplets ont besoin au demarrage.
		JRootPane rootPane = this.getRootPane();	
		rootPane.putClientProperty("defeatSystemEventQueueCheck", Boolean.TRUE);
      
	  setLayout(new FlowLayout());
	  add( entree ); add( boutonDeConversion ); add( sortie );
    sortie.setEditable( false );
    try{
        getContentPane().setBackground(Color.decode(this.getParameter("backgroundColor")));
    }
    catch(Exception e){
        getContentPane().setBackground(Color.pink);
        e.printStackTrace();
    }
    boutonDeConversion.addActionListener( this );
   }

	/** 
	 * methode declenchee lorsque le bouton de conversion est appuye. 
	 * remarquer que le champs de droite (les degres Celsius) n'est pas editable.
	 * @param ae l'evenement transmis
	 */
	public void actionPerformed( ActionEvent ae ){
	  String valeur = entree.getText();
	  String text;
	  
	    try{
	    	float celsius = fahrenheitEnCelsius(Integer.parseInt(valeur)); // a completer
	    	text = Float.toString(celsius);
	    }
	    catch(NumberFormatException nfe){
	    	text = "error !";
	    }
	    catch(Exception e){
	    	text = "absolute zero error !";
	    }
    	sortie.setText(text);
	}

	/**
	 * Retourne quelques renseignements a propos de cet applet. 
	 * Un applet devrait remplacer cette methode afin de retourner un String
	 * decrivant l'auteur, la version et les droits d'auteur.
	 *
	 * @return un String decrivant l'Applet
	 */
	public String getAppletInfo()
	{
		// remplacez ceci par votre code
		return "Titre : Applette Fahrenheit ";
	}

	/**
	 * Retourne quelques renseignements a propos des parametres acceptes
	 * par l'Applet.  Vous devriez retourner un tableau de Strings decrivant
	 * chaque parametre separement (premier indice).
	 * Le second indice du tableau correspond aux nom, type et description
	 * de chaque parametre.
	 *
	 * @return  un String[][] decrivant l'Applet
	 */
	public String[][] getParameterInfo()
	{
		// Decrivez vos parametres ici
		String paramInfo[][] = {
			 {"backgroundcolor",  "White", "la couleur en hexadecimal"}
		};
		return paramInfo;
	}
	
	/** 
     * la methode a completer. 
     *   @param f la valeur en degre Fahrenheit
     *   @return  la conversion en degre Celsius
	 * @throws java.lang.Exception 
     */
    public static float fahrenheitEnCelsius( int f) throws Exception
    {
    	float  temp = (f-32)*50/9/(float)10.0;
    	if(temp < -273.1) throw Exception;
    	  return temp;
    }

}
